#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
问题1：统计分析志愿者的活动情况
根据加速度记录数据，统计汇总附件1中各个志愿者的身体活动信息。
"""

import os
import sys
import pandas as pd

# 导入ActivityMonitor类
from res import ActivityMonitor

def main():
    print("开始执行问题1 - 统计分析志愿者的活动情况...")
    
    # 获取文件的绝对路径
    current_dir = os.path.dirname(os.path.abspath(__file__))
    parent_dir = os.path.dirname(current_dir)
    file_dir = os.path.join(parent_dir, "file")
    attachment_path = os.path.join(file_dir, "附件1.csv")
    
    # 打印当前工作目录和文件路径信息，帮助调试
    print(f"当前工作目录: {os.getcwd()}")
    print(f"脚本位置: {__file__}")
    print(f"文件路径: {attachment_path}")
    
    if not os.path.exists(attachment_path):
        # 尝试查找附件1文件夹
        folder_path = os.path.join(file_dir, "附件1")
        if os.path.isdir(folder_path):
            print(f"找到附件1文件夹，将使用文件夹中的数据")
            attachment_path = folder_path
        else:
            print(f"错误: 找不到文件 {attachment_path} 或文件夹 {folder_path}")
            print("请将「附件1.csv」文件放在file文件夹中，或确保存在附件1文件夹")
            return
    
    # 创建活动监测器
    monitor = ActivityMonitor()
    
    # 尝试不同编码读取数据
    if os.path.isfile(attachment_path):
        try:
            data = pd.read_csv(attachment_path, encoding='utf-8')
            print(f"成功读取数据(UTF-8)，记录数: {len(data)}")
        except UnicodeDecodeError:
            try:
                data = pd.read_csv(attachment_path, encoding='gbk')
                print(f"成功读取数据(GBK)，记录数: {len(data)}")
            except Exception as e:
                print(f"无法读取数据文件: {e}")
                return
        except Exception as e:
            print(f"读取数据时出错: {e}")
            return
        
        # 检查数据列
        if 'pid' not in data.columns:
            print(f"错误: 数据中缺少志愿者ID列(pid)")
            print(f"现有列: {data.columns.tolist()}")
            return
            
        if 'MET' not in data.columns:
            print(f"警告: 数据中缺少MET值列，将尝试根据加速度计算")
    
    # 执行统计分析并保存到上级目录
    output_file = os.path.join(parent_dir, "result_1.xlsx")
    result = monitor.analyze_volunteer_activity(input_path=attachment_path, output_file=output_file)
    
    if result is not None:
        print(f"\n统计结果示例（前5行）:")
        print(result.head().to_string(index=False))
        print(f"\n结果已保存到: {output_file}")
        print("处理完成!")
    else:
        print("统计分析失败，请检查数据文件格式是否正确。")

if __name__ == "__main__":
    main() 